// import _, { pick } from 'lodash'

// const _ = require('lodash')

// import _, { pick } from '../../utils/lodash.js'
// import '../../utils/lodash-fix.js'
// import { pick } from 'lodash'

Page({
  data: {
    code: '', // 验证码
    mobile: '18600000001', // 手机号

    timeData: {},
    countDownVisible: false,

    redirectURL: '', // 登录成功的回跳地址
  },

  onLoad({ redirectURL }) {
    if (redirectURL) {
      // 如果不是以 / 开头
      if (!redirectURL.startsWith('/')) {
        redirectURL = '/' + redirectURL
      }

      this.setData({
        redirectURL,
      })
    }
  },

  onInputOfMobile(e) {
    this.setData({ mobile: e.detail.trim() })
  },

  countDownChange(e) {
    this.setData({
      timeData: e.detail,
      countDownVisible: e.detail.minutes === 1 || e.detail.seconds > 0,
    })
  },

  // 校验手机号
  verifyMobile() {
    // 宽松的正则校验

    // 错误优先的编码习惯

    if (!/^1[3-9]\d{9}$/.test(this.data.mobile)) {
      wx.utils.toast('请输入正确的手机号码！')
      return false
    }

    return true
  },

  // 校验短信验证码格式
  verifyCode() {
    if (!/^\d{6}$/.test(this.data.code)) {
      wx.utils.toast('请输入正确6位的验证码！')
      return false
    }
    return true
  },

  // 这个方法就是用来显示倒计时的
  async showCountDown() {
    // 发获取验证码的请求
    // 1. 校验手机号码合法性
    if (!this.verifyMobile()) return

    // 2. 再去发请求

    // 第二个参数就是请求数据
    const { code, data } = await wx.http.get('/code', {
      mobile: this.data.mobile,
    })

    if (code !== 10000) return wx.utils.toast()

    this.setData({ code: data.code })

    this.setData({
      countDownVisible: true, // 取反的逻辑不合适，直接用 true 即可
    })

    // 小程序中可以使用该内置API实现复制粘贴
    // wx.setClipboardData({ data: data.code })
  },

  async login() {
    // 1. 先校验手机和验证码是否合法
    // 2. 发请求
    if (!this.verifyMobile()) return
    if (!this.verifyCode()) return

    // 能走到这里，说明数据校验都通过了，可以发请求啦~~

    // const { code, data } = await wx.http.post('/login', {
    //   mobile: this.data.mobile,
    //   code: this.data.code,
    // })

    const { code, data } = await wx.http.post('/login', wx.utils.pick(this.data, ['mobile', 'code']))

    if (code !== 10000) return wx.utils.toast()

    // getApp().globalData.token = data.token
    // wx.setStorageSync('token', data.token)

    getApp().globalMethods.setToken(data.token, data.refreshToken)

    wx.utils.toastSucc('登录成功')

    // 跳哪里去？
    // 先看有没有来时的路（redirectURL参数），如果有，就跳回去，如果没有，就去首页

    // if (this.data.redirectURL) {
    //   wx.redirectTo({
    //     url: this.data.redirectURL,
    //   })
    // } else {
    //   wx.redirectTo({
    //     url: '/pages/index/index',
    //   })
    // }

    // 这行代码和上面注释的代码是等价的
    wx.redirectTo({
      url: this.data.redirectURL || '/pages/index/index',
    })
  },
})
